import axios from 'axios';
import { ElMessage } from 'element-plus';

const request = axios.create({
    baseURL: '/api',
    timeout: 15000,
});

request.interceptors.response.use(
    (response) => {
        const res = response.data;

        // 解析 Blob 文件流
        if (response.config.responseType === 'blob') {
            return res;
        }

        // 解析 JSON 字符串
        if (typeof res === 'string') {
            try {
                return res ? JSON.parse(res) : res;
            } catch (e) {
                console.error('Failed to parse response as JSON:', e);
                return res;
            }
        }

        // **保持原有结构**
        if (res.code && res.code !== 200) {
            console.error("请求失败，后端返回的数据:", res);
            ElMessage.error(res.message || "请求失败，请稍后重试");
            return Promise.reject(new Error(res.message || "请求失败"));
        }


        return res; // ✅ 保持 `res` 结构，保证 `code` 仍然可用
    },
    (error) => {
        console.error("Response Error:", error);

        if (error.response) {
            switch (error.response.status) {
                case 401:
                    ElMessage.error("未授权，请重新登录");
                    break;
                case 403:
                    ElMessage.error("权限不足，禁止访问");
                    break;
                case 404:
                    ElMessage.error("请求的资源不存在");
                    break;
                case 500:
                    ElMessage.error("服务器内部错误，请稍后重试");
                    break;
                default:
                    ElMessage.error("请求失败，请稍后重试");
            }
        } else if (error.request) {
            ElMessage.error("网络连接失败，请检查网络设置");
        } else {
            ElMessage.error("请求失败，请稍后重试");
        }

        return Promise.reject(error);
    }
);

export default request;
